1. 1. 1.使用const定义变量,在定义的时候必须赋值。
  2. 2. 2.fs.watch可以用来监控文件变化,第一个参数是文件路径,第二个参数是callback。
  3. 3. 3.事件循环,node代码一路运行到底,事件循环会一直持续下去,直到已经没有什么需要被wait for,或者程序退出(比如一个未被捕获的异常所引起的退出)。
  4. 4. 4.process.argv命令行参数列表,第一个是nodefull path路径,第2个是所执行文件的full path路径,第三个开始就是自定义参数。
  5. 5. 5.child_process模块所暴露出来的spawn方法能够创建一个ChildProcess对象,这个对象具有stdin,stdout,stderr等属性,其中上面所提到的这三个属性是Stream类型的对象,能够被用来读写。比如说streamObject.pipe(process.stdout);
  6. 6. 6.fs.writeFile,如果文件不存在的话则创建它,如果存在的话,并且没有携带其它额外参数的话,那么覆盖原文件。
  7. 7. 7.事件发布订阅模式,常见的错误捕获方式有两种,分别是利用on和作为一个err cb。一个未被捕获的异常会导致线程被中断。
  8. 8. 8.node在很多build-in 模块中都既提供了同步方法,也提供了异步方法,众所周知,同步方法会阻塞后续IO的执行,那么问题来了是不是使用异步方法是最佳时实践呢?其实也不尽然,分场合,在node中,程序的运行有两个阶段,分别是初始化阶段和运行阶段,在初始化阶段完成一些诸如引入模块文件,读取配置的工作;在运行阶段,则进入了事件循环里面,你可能会遇到大量的网络请求,因此在运行阶段记住使用异步方法是提高效率的最佳实践。而对于阶段一来说,很典型的require就是一个同步的操作,在第一阶段可以根据相应场合来做一些同步操作。
  9. 9. 9.fs.watch监听一个不存在的文件会报错,不会被callback的错误处理方式给监听到;fs.watch监听的文件被删除是ok的,
  10. 10. 10.net.createServer方法接收一个cb,cb的第一个参数是connection,每当有请求进来的时候都会进入回调函数,要想向客户端写数据的话可以使用connection.write()方法写数据,可以监听connection.on(‘close’)来监听客户端断开连接。
  11. 11. 11.当你使用nodejs进行网络开发时,在两个端点之间传递信息如果处于理想情况下的话,那么可以一次传递成功;但是如果数据量很大的情况下的话,那么数据将会被分成几份进行传输。
  12. 12. 12.npm i –production 表示只安装dependencies而不安装devDependencies。
  13. 13. 13.Mocha默认的最大延时时间为2s。运行的时候携带上–timeout后面加上最大延时时间表明最大的延时时间。如果在整个应用的测试实例中有一个测试单元是一个需要延时的操作,并且已经超过了Mocha设置的最大测试时间的话,那么我们可以像下面这样处理:
  14. 14. 14.nodejs是单线程的,尽管如此,但是node运行在机器上还是能够运用上多核机器的性能,也就是说,node尽管被设计成了单线程的,但是还是可以做多进程的事情,实现这个的银弹就是Node内建的模块cluster。在多线程系统中,要想以并行的方式处理更多的任务的话,那么自然是使用多个线程来协同处理了。但是node被设计成一种单线程事件循环模式,所以在node中要想并行的处理多个任务的话,那么就需要使用其它方法了,在node里面,完成这个目的使用的是进程来处理。
  15. 15. 15.child_process模块也是用来产生进程的,但是它spawn所执行的工作是非nodejs类的工作,但是对于处理nodejs类的工作的话,那么利用cluster模块中的fork方法是一种更好的选择。
  16. 16. 16.直观看来,nodejs中process.nextTick中的cb会比setTimeout(cb, 0)更快执行。
  17. 17. 17.curl -O 资源链接 可以下载指定链接的资源。
  18. 18. 18.Mocha携带flag – watch表明持续监听测试用例文件,如下所示:
  19. 19. 19.chmod +x file;将文件权限修改为可执行。

《nodejs 8 the right way》-阅读笔记1

1.使用const定义变量,在定义的时候必须赋值。

2.fs.watch可以用来监控文件变化,第一个参数是文件路径,第二个参数是callback。

3.事件循环,node代码一路运行到底,事件循环会一直持续下去,直到已经没有什么需要被wait for,或者程序退出(比如一个未被捕获的异常所引起的退出)。

4.process.argv命令行参数列表,第一个是nodefull path路径,第2个是所执行文件的full path路径,第三个开始就是自定义参数。

5.child_process模块所暴露出来的spawn方法能够创建一个ChildProcess对象,这个对象具有stdin,stdout,stderr等属性,其中上面所提到的这三个属性是Stream类型的对象,能够被用来读写。比如说streamObject.pipe(process.stdout);

6.fs.writeFile,如果文件不存在的话则创建它,如果存在的话,并且没有携带其它额外参数的话,那么覆盖原文件。

7.事件发布订阅模式,常见的错误捕获方式有两种,分别是利用on和作为一个err cb。一个未被捕获的异常会导致线程被中断。

8.node在很多build-in 模块中都既提供了同步方法,也提供了异步方法,众所周知,同步方法会阻塞后续IO的执行,那么问题来了是不是使用异步方法是最佳时实践呢?其实也不尽然,分场合,在node中,程序的运行有两个阶段,分别是初始化阶段和运行阶段,在初始化阶段完成一些诸如引入模块文件,读取配置的工作;在运行阶段,则进入了事件循环里面,你可能会遇到大量的网络请求,因此在运行阶段记住使用异步方法是提高效率的最佳实践。而对于阶段一来说,很典型的require就是一个同步的操作,在第一阶段可以根据相应场合来做一些同步操作。

9.fs.watch监听一个不存在的文件会报错,不会被callback的错误处理方式给监听到;fs.watch监听的文件被删除是ok的,

10.net.createServer方法接收一个cb,cb的第一个参数是connection,每当有请求进来的时候都会进入回调函数,要想向客户端写数据的话可以使用connection.write()方法写数据,可以监听connection.on(‘close’)来监听客户端断开连接。

11.当你使用nodejs进行网络开发时,在两个端点之间传递信息如果处于理想情况下的话,那么可以一次传递成功;但是如果数据量很大的情况下的话,那么数据将会被分成几份进行传输。

12.npm i –production 表示只安装dependencies而不安装devDependencies。

13.Mocha默认的最大延时时间为2s。运行的时候携带上–timeout后面加上最大延时时间表明最大的延时时间。如果在整个应用的测试实例中有一个测试单元是一个需要延时的操作,并且已经超过了Mocha设置的最大测试时间的话,那么我们可以像下面这样处理:

1
2
3
it('should finish with 5 seconds', done => {
setTimeout(done, 4500);
}).timeout(5000);

除了在it后面调用timeout方法之外,其实在describe后面也可以设置一个timeout方法。

14.nodejs是单线程的,尽管如此,但是node运行在机器上还是能够运用上多核机器的性能,也就是说,node尽管被设计成了单线程的,但是还是可以做多进程的事情,实现这个的银弹就是Node内建的模块cluster。在多线程系统中,要想以并行的方式处理更多的任务的话,那么自然是使用多个线程来协同处理了。但是node被设计成一种单线程事件循环模式,所以在node中要想并行的处理多个任务的话,那么就需要使用其它方法了,在node里面,完成这个目的使用的是进程来处理。

15.child_process模块也是用来产生进程的,但是它spawn所执行的工作是非nodejs类的工作,但是对于处理nodejs类的工作的话,那么利用cluster模块中的fork方法是一种更好的选择。

16.直观看来,nodejs中process.nextTick中的cb会比setTimeout(cb, 0)更快执行。

17.curl -O 资源链接 可以下载指定链接的资源。

18.Mocha携带flag – watch表明持续监听测试用例文件,如下所示:

1
2
3
4
5
{
"scripts": {
"test:watch": "mocha --watch --reporter min"
}
}

19.chmod +x file;将文件权限修改为可执行。